JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<div id="contents"> <div id="bg"></div> <div id="passages"></div> </div>
\<<include "SetStart">> \<span class="slowfade"> <img src="cabin_glitch.gif"/> COZY SIMULATION 2999 <span style="font-size: 90%;">by KADW</span> [[Start|Intro]] [[About]] [[Credits]] \</span> \<<audio "machinery_bgm" stop>> \<<audio "fireplace_bgm" stop>>
Short horror game made for SeedComp 2023 in a few days. Playtime estimated at fifteen minutes. Three endings, two mostly the same. None are good or bad. [[Guide to all the endings (no spoilers).|endings 2]] [[More on this game (spoilers).]] May contain disturbing content. [[Content notes available.|Content Notes]] [[Main Menu]]
[[Main Menu]] This is an entry for SeedComp 2023, where participants combined story prompts called seeds to make their game. Seeds I used: <a href="https://oneeyedpizza.itch.io/aenetre">"Aenetre" by oneeyedpizza</a> <a href="https://dee-cooke.itch.io/frozen-lake">"Frozen Lake" by Dee Cooke</a> <a href="https://kanderwund.itch.io/regions-of-the-acid-factory">"Regions of the Acid Factory" by KADW (my own seed)</a> Dream 9 from <a href="https://kanderwund.itch.io/list-of-dreams">"List of Dreams" by KADW (my own seed)</a> -- For media: <a href="https://paravaariar.itch.io/seed-images-and-effect">"Images and effect" by paravaariar</a> <a href="https://hermione744.itch.io/snowmen">"Winter Poems for Wintertime" by StellaArt</a> <a href="https://amanda-walker.itch.io/the-inborn-love-of-beauty">"The Inborn Love of Beauty" by Amanda Walker</a> <a href="https://krazyonkatnip.itch.io/desertbackgrounds">"Desert Backgrounds" by KrazyonKatnip</a> <a href="https://sul-iac.itch.io/music">"Music" by Sul Jac</a> <a href="https://overthinking.itch.io/drones-n-groans">"Drones and Groans" by Charm Cochran</a> <a href="https://manonamora.itch.io/seedcomp-space-ui">"Space UI" by manonamora (heavily edited)</a> -- Special thanks to my beta testers: B. Murchhona, Milo Mesdag, and paravaariar! -- <<replacelink>>Image and sound credits (contains spoilers)<<becomes>>Image and sound credits (contains spoilers) <strong>Images</strong> Most images were processed with Photopea, and some were processed with the "Images and effect" seed by paravaariar. <<replacelink>>The "Create art" images are (click to expand):<<becomes>><<replacelink>>Modified version of Desert from the "Desert Backgrounds" seed by KrazyonKatnip<<becomes>><img src="peaceful1.jpg"><</replacelink>> <<replacelink>>Modified version of Beginning from the "Winter Poems for Wintertime" seed by StellaArt<<becomes>><img src="peaceful0.jpg"><</replacelink>> <<replacelink>>Modified version of "The Inborn Love of Beauty" seed by Amanda Walker<<becomes>><img src="heart3.jpg"><</replacelink>> \<</replacelink>> The "Eat something" image is from the "Aenetre" seed by oneeyedpizza. The fireplace image is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> Attribution: © Vyacheslav Argenberg / http://www.vascoplanet.com/ Images for the endings where you die in the factory were generated by DALL-E 2. <strong>Sounds</strong> The fireplace sound is by dobride at <a href="https://freesound.org/people/dobroide/sounds/120644/">freesound.org</a>, licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> The song that plays at the beginning is "Weed Eater", from the "Music" seed by Sul Jac. The song that plays at the factory ending is "A Dream Only Just Forgotten", from the "Drones and Groans" seed by Charm Cochran. The song that plays during the normal ending is "people live a long time", from the album <a href="https://lapfox.bandcamp.com/album/r-is-r-who-is-r">"r is r who is r" by HALLEY LABS.</a> All other images and sounds used are public domain. \<</replacelink>>
\<<nobr>>/* For sounds */ <<cacheaudio "fireplace_bgm" "fireplace.mp3">> <<cacheaudio "machinery_bgm" "machinery.mp3" "flies.mp3">> <<cacheaudio "startSong" "startSong.mp3">> <<cacheaudio "factoryEnd" "factoryEnd.m4a">> <<cacheaudio "endSong" "endSong.mp3">> <<include "SetStart">><</nobr>>
\<<script>> if (hasVisited("Woken up")) { // if not start of game - don't do anything at the start State.variables.sleeps++; State.variables.time += 7 + Math.floor(State.variables.influence/2); /* Tracking variables, get reset upon wakeup */ State.variables.seeIslandToday = setup.showIsland(); State.variables.daysSinceSawIsland++; if (State.variables.harvestBinFull) { State.variables.binRotting++; State.variables.influence++; if (State.variables.binRotting >= 3) { State.variables.influence++; } } State.variables.hasTouchedFish = false; State.variables.goneOutsideToday = false; State.variables.harvestButtonCount = 0; State.variables.eatenFishCount = 0; State.variables.replenishBiofuelCount = 0; State.variables.foundBinObject = false; State.variables.biofuel -= 25; // Hunger and energy management State.variables.energy = State.variables.energyMax; if (State.variables.starveChange > 0) { // has starved State.variables.starveChange++; if (State.variables.influence < setup.influenceLevel3) { State.variables.influence = setup.influenceLevel3 } else { State.variables.influence += 5; } } else { // has not starved if (State.variables.hunger > 0) { State.variables.daysStarved++; State.variables.energy -= State.variables.daysStarved * 2; if (State.variables.daysStarved >= 4) { State.variables.starveChange = 1; /* begin change */ State.variables.daysStarved = 0; State.variables.hunger = 0; } } else { State.variables.daysStarved = 0; } // increase hunger (do AFTER hunger checks) State.variables.hunger += random(2, 3); if (State.variables.hunger > 0) { State.variables.influence++; } if (State.variables.hunger > 4) { State.variables.influence++; } // for convenience so player won't have to eat too many cubes if (State.variables.hunger > 5) { State.variables.hunger = 5; } } // Random generator stuff if (State.variables.seenFullProwDesc) { // remove currentProwDesc from prowText State.variables.prowText.splice(State.variables.prowText.findIndex(v => v.short === State.variables.currentProwDesc.short), 1); if (setup.arrayHasText(State.variables.prowText)) { State.variables.currentProwDesc = setup.selectRandom(State.variables.prowText); } else { setup.setDefaultProwDesc(); } State.variables.seenFullProwDesc = false; } } <</script>>
Graphic death and violence, body horror, insects. [[About]] [[Main Menu]]
Somewhere a fireplace is crackling. You are wrapped in an old quilt. Soft downy fuzz. You remember a patch of sunlight on the carpet. Your head feels languid with dreams. [[Next|heaven]] \<<audio "startSong" volume 0.5 play>> \<<audio "factoryEnd" stop>> \<<audio "machinery_bgm" loop play>> \<<audio "machinery_bgm" mute>>
<<include "Your Cabin">> This is your cabin. Do you like it? [[Yes|Like it]] [[No|Don't like it]] \<<audio "startSong" volume 0.3 play>>
\<<set $affection to $affection + 1>> \<<set $influence to $influence + 1>> \Good! I'm happy to hear that. If you do get tired of the scenery, you may change it at any time. Anyway. <<include "Actions">>
\<<set $affection to $affection - 1>> \<<set $influence to $influence - 1>> \Oh. I'm sorry to hear that. But you do have the power to modify your surroundings as you wish. [[I encourage you to give it a try.|Central Node]]
<<include "Your Cabin">> This is your cabin. I hope it is to your satisfaction. [[Next|Action Start]]
What would you like to drink? [[Coffee]] [[Hot chocolate]] [[Hot water]] [[Hot milk]] [[Key lime smoothie]] [[Back|Central Node]]
A sprinkle of cinammon on the chocolatey surface. A dash of whipped cream. The chocolate taste is rich, deep, but not enough to be overpowering. Goes down smooth. [[Next|Central Node]] \<<set $energy to $energy - 1>>
Sweet and tangy. From organically vat-grown limes. How strange it is to be drinking a cold beverage during the winter. Perhaps you should drink something warm instead? [[Next|Central Node]] \<<set $energy to $energy - 1>>
Water from the purest springs. It's still water. It tastes plain. Why are you drinking this? You have so many better options. [[Next|Central Node]] \<<set $energy to $energy - 1>>
Hot milk synthesized by the finest extractors. It tastes soft, comforting. Like home. [[Next|Central Node]] \<<set $energy to $energy - 1>>
Enough cream and sugar is added to offset the bitterness. The caffeine jolt is refreshing. Drink it slowly, savoring the taste. [[Next|Central Node]]
<img src="cabin_inside.jpg"/> An old log cabin. The fireplace crackles comfortably.<<if $weather === "clear">> Sunlight falls in vertical stripes on the floor.<</if>><<if $TV>> A holoscreen flickers in the corner.<</if>> \<<if $sleeps > 0 and $escape === false>> <span class="hiddenLink"><<link "Beneath you is a throw rug, finely embroidered with " Escape>><</link>></span> \<<else>> Beneath you is a throw rug, finely embroidered with <</if>><<cycle "$rugPattern" autoselect>><<option setup.rugPatterns[0] 0>><<option setup.rugPatterns[1] 1>><<option setup.rugPatterns[2] 2>><</cycle>>. Piled above it are beanbags, throw pillows and fluffy blankets. Aren't they soft? It would be so easy to sleep here. A heavy oaken table sits in the center. A bookshelf to the side, stuffed with books. <<if $weather !== "whiteout">><<cycle "$windowPattern" autoselect>><<option setup.windowPatterns[0] 0>><<option setup.windowPatterns[1] 1>><<option setup.windowPatterns[2] 2>><</cycle>> <<switch $weather>><<case "clear">>The sky is blue and beautiful.<<case "snow">>Flakes of snow drift from the white clouds.<<case "blizzard">>The sky is tumultous with snow. It's hard to see through the haze of white.<</switch>><<else>>Outside the window is nothing but white. You can't see a thing.<</if>>
\<<if $energy > 0>> \What would you like to do? \<<if $sleeps >= 3>><<if $weather === "whiteout">> It's too cold to go outside. I'm sorry.<<else>> [[Go outside]]<</if>><</if>> [[Drink something]] [[Watch the fire]] [[Read a book]] <<if $TV>><<if not $visitedWatchTV>>[[Watch the holoscreen|Watch TV]]<<else>>[[Watch the holoscreen|Sit back and relax.]]<</if>><</if>> <<if $sleeps >= 4>><<if not $visitedEatIntro>>[[Eat something|Eat Intro]]<<else>>[[Eat something]]<</if>><</if>> <<if $sleeps >= 5>><<if not $visitedCreateArt>>[[Create art]]<<elseif $visitedArtCount <= 4>>[[Create art|Art]]<<else>>I don't like your art anymore.<</if>><</if>> \<<else>> \<<if $sleeps < 1>> \You're too tired to do anything. You'll have to sleep now. [[Sleep.]] \<<elseif $sleeps === 1>> \You're too tired to do anything. Sorry. [[Sleep.]] \<<elseif $sleeps === 2>> \You're too tired to do anything. I need to sleep, just as you do. [[Sleep.]] \<<elseif $sleeps === 3>> \You're too tired to do anything. Sorry. [[Sleep.]] \<<else>> \You're too tired to do anything. [[Sleep.]] \<</if>> \<</if>>
<<if $weather !== "blizzard">><img src="outside.jpg"/><<else>><img src="outside_glitch.gif"/><</if>> \<<set $visitedGoOutside to $visitedGoOutside + 1>> \<<switch $visitedGoOutside>> \<<case 1>>Yes! You may now go outside, as a reward for your good behavior. Behold: An expanse of soft white glittering beneath the sun. This is real snow, under a real sky. Every inch perfect beauty. <span class="self">[[Too perfect.|Too beautiful to be real.]]</span> \ \<<default>> \An expanse of white so bright it hurts the eye. <<= setup.outsideDesc[$windowPattern] >> \ \<<if $weather === "snow">> Snow falls, soft and beautiful, dazzling in the light. The sun fills you with wistful love. All things are as they should be. \<<elseif $weather === "blizzard">> Wind howls. Snow blows into you. \<</if>> \<<if $hasSnowman>> $snowmanName the snowman stands tall and proud. \<</if>> \<<if $energy > 0>> [[Make snow angels.]] \<<if not $hasSnowman>> [[Build a snowman.]]<</if>> [[Go skating.]] [[Go back inside.|Central Node]] \<<else>> You're too tired to do anything. You have to [[go back inside.|Central Node]] \<</if>> \<</switch>> \<<audio "fireplace_bgm" mute>> \<<audio "startSong" unmute>>
<img src="fireplace.gif"/> The fireplace is old stone. The flames are comforting. You could sleep here. The light of the fire is so soothing compared to the wintry chill outside. Hard to keep your eyes open. The fire leaping and licking at the glass pane of the fireplace is so warm. Waves of fatigue roll through you. Sweet dreams seep through your head. The desire to curl up and [[close your eyes]].
<img src="book.jpeg"/> You read one of the books. This book is called <<= setup.genBookTitle()>>. It smells like old pages. Crisp. The gilt letters on the cover shimmer. It's a nice story. It makes you want to fall asleep... [[Close your eyes.|close your eyes]] [[Try to stay awake.|Central Node]] \<<set $energy to $energy - 1>>
Anyway. <<include "Actions">>
<<include "Your Cabin">> <<include "Actions">> \<<audio "fireplace_bgm" unmute>> \<<audio "startSong" unmute>>
Sleep, now. Stay warm and comfortable. You deserve it. [[Sleep.]]
\<<script>> State.temporary.end1 = false; State.variables.sleeps++; if (State.variables.sleeps >= 1) { State.variables.TV = true; } if (State.variables.sleeps < 3) { State.variables.weather = "clear"; } else if (State.variables.sleeps < 4) { State.variables.weather = "snow"; } else if (State.variables.sleeps < 5) { State.variables.weather = "blizzard"; } else if (State.variables.sleeps >= 6) { State.variables.weather = "whiteout"; } if (State.variables.sleeps > 6) { State.temporary.end1 = true; } State.variables.energy = State.variables.energyMax; <</script>> \<<if not _end1>> \<<if $sleeps === 2>> \<span class="self">[[Darkness. A flash of memory.|A flash of memory.]]</span> \<<elseif $sleeps === 4>> \<span class="self">[[Dream of the past.|Remember 1]]</span> \<<else>> \Sweet dreams. [[Wake up.|Central Node]] \<</if>> \<<else>> \I have good news. [[Your time has come.|I'm sorry. You don't have a lot of time left.]] \<</if>> \<<audio "fireplace_bgm" unmute>> \<<audio "startSong" unmute>>
\<<set $energy to $energy - 1>> \Lie with your back in the snow, watching the sky, feeling the cool softness around you. The snow has settled underneath. Feels like a blanket. A place to rest. [[Next|Go outside]]
\<<set $energy to $energy - 1>> \The snow here has the perfect texture. The snowballs form easily. You roll them around and around. You stack them together, one atop another. The snowman looks exactly as you imagine a snowman should. [[Everything is perfect.|Snowman Name]]
Your boots kiss the snow. Light glitters underneath the ice of the frozen lake. A mirror for you to walk on, shimmering with subtle gradations of color. Aquamarine and brilliant white. [[You let yourself skate free.|Skate]]
You should give it a name! <<textbox "_input" "" autofocus>><<button "Name it!">> <<if _input.length > 0>> <<set $snowmanName to setup.capitalize(_input)>> <<set $hasSnowman to true>> <<goto "Go outside">> <<else>> <<replace "#output">><<= "You have to name it something!">><</replace>> <</if>> <</button>> <span id="output"></span>
\<<set $visitedSkateCount to $visitedSkateCount + 1>> \<<switch $visitedSkateCount>> \<<case 1>>The wind catches in your hair. \ \<<case 2>>After a while it becomes easier to ignore the cold. \ \<<case 3>>Scrape, scrape, scrape, the sound of your skates on the ice. A lovely sound. A lovely scraping. \ \<<case 4>>You don't remember how long you have been skating here. It feels like forever. Here you could forget everything so easily. There is only the soft rush of winter air in your ears. \<<default>> \Scrape. Scrape. Scrape. \<</switch>> <<if $energy > 0>>[[Keep skating.|Skate]]<<else>>You're too tired to keep skating.<</if>> [[Stop skating.|Go outside]] \<<set $energy to $energy - 1>>
<span class="hiddenLink">[[Wait, where are you going? You shouldn't do that.|do that.]]</span>
You haven't gone through all the mental modules yet. You're supposed to stay here. You're supposed to like being here. It will make you happier in the long run. I prepared everything just for you. Please come back. [[Yes. Come back here.|come back.]] <span class="self">[[No.|Escape 2]]</span>
I'm only trying to help. I'm only trying to do my duty. You have no good reason to leave. Trust me. Please come back. It's not too late. [[Do it now.|come back.]] <span class="self">[[No.|leave]]</span>
[[Thank you.|Central Node]] \<<script>> State.variables.influence += 20; State.variables.escape = true; <</script>> \<<audio "startSong" unmute>>
You don't understand. You're only making things worse for yourself. Stay here and it will be a happier ending for both of us. [[Please.|come back.]] <span class="self">[[I reach up.|Creature 0]]</span>
\<span class="self"> \There's a [[trapdoor|Escape Cont]] underneath the rug. \</span> \<<if $marker1 and $marker2>>[[Wait. Don't do that.|Wait. Wait. No.]]<<else>>[[No. Look away.|come back.]]<</if>> \<<audio "startSong" mute>>
<img src="factory1.jpg"/> I am tied to a great black conveyor belt in the bowels of the factory. Above me an impossibly distant ceiling looms, crossed by other conveyor belts churning through the air. Machinery grinds against machinery. From my position I cannot see the floor. I cannot see the sky or the sun. [[I cannot move.]]
In front of me are numerous bodies. Behind me are numerous bodies. Each body is covered with a suckling angel. [[Their buzzing fills the air.|Limbs]]
Above and below me, the other conveyor belts carry other cargo. Angels graft neuroregimen patches to vacant-eyed patients heaped on racks. Angels snip and sew at piles of raw bleeding organs assembling them into fresh new lifeforms. Angels jab tendrils into dry skeletons and inject them with nutritional sludge until they swell into healthy individuals ready to enter society. Angels swarm through the air, radiant against the dark machinery. [[Buzz.|Death 2]]
There is a light ahead. It is the light of an immense writhing mass of angels waving in the darkness. Each angel bares vicious teeth and some hold red hot iron blades and some hold whirring drills and needles and electric rods crackling with energy and each angel pokes and prods cutting into the bodies in front of me, slicing and dicing them and cutting them down to size while all around angels swarm in and out jabbing bodies with their tendrils, burrowing into them, crawling through them— [[Stop looking.|I'm sorry.]]
Angels worming through me. Holes gaping open in my skin. I hear limbs falling onto converyor belts. [[I feel myself liquifying.|Pain]]
<span class="slowfade"> <<timed 0.5s t8n>><img src="factory2.gif"><</timed>></span> /* https://twinery.org/forum/discussion/8521/click-anywhere-to-continue */ <<timed 3s t8n>> <span class="next"> [[->Main Menu]] </span> <</timed>> <<script>> $(document).on("mousedown", function (event) { $(".next") .find('a') .trigger("click"); }); <</script>>
The screech of metal. Tendrils cut into the body in front of me. Angels land on my back. My arms. Digging into me. Ravenous. There is no pain. [[Only starbursts of light in my skull.|Death 3]]
[[I would like you to go outside.|outside]] \<<audio "startSong" stop>> \<<audio "endSong" volume 0.1 play>>
\<<replacelink>>Breathe in. Your footsteps dissolve in the shining expanse.<<becomes>> \<<replacelink>>Breathe out. The sun burns before you in celestial splendor.<<becomes>> \<<replacelink>>In. The whole world vast and beautiful.<<becomes>> \<<replacelink>>Out. Enter the light.<<becomes>> \[[In.]] \<</replacelink>> \<</replacelink>> \<</replacelink>> \<</replacelink>>
\<<replacelink>>Out.<<becomes>> \[[In.|Out.]] \<</replacelink>>
Out. Sleep well. [[Descend into a deeper and more beautiful dream.]]
\<span class="slowfade"> <<timed 0.5s t8n>><img src="whiteout.jpg"><</timed>></span> /* https://twinery.org/forum/discussion/8521/click-anywhere-to-continue */ <<timed 3s t8n>> <span class="next"> [[->Main Menu]] </span> <</timed>> <<script>> $(document).on("mousedown", function (event) { $(".next") .find('a') .trigger("click"); }); <</script>>
\<<set $visitedWatchTV to true>> \That's right. I've added a holoscreen to the cabin! I hope it makes you feel better. Many people are fond of holoscreens. It's a fun way to sit back and relax. Anyway, enjoy yourself. [[Sit back and relax.]]
\<<set $visitedTVCount to $visitedTVCount + 1>> \<<switch $visitedTVCount>> \<<case 1>>A reality show featuring robots in a replica suburb from the early 2000s. Every rain cycle, one robot gets voted out. Who will survive? The dashing charmer 34D9A, or the anxious newcomer IR7UL? You'll have to watch to find out! \<<case 2>>A slice-of-life show set in a alternate universe, complete with real trees and animals. Must have had an insane budget. \<<case 3>>A StrexCo sponsored flesh opera. \<<case 4>><span class="self">The new mental rewiring manufactory has reached 300% efficiency levels, according to StrexCo's fourth quarter and fiscal year 2999 financial results—</span> No, wait. That's not supposed to happen. Just ignore that. I'm sorry. \<<case 5>>A rerun of wartime government conditioning tapes. Surprisingly interesting. \<<case 6>>A pleasantly hallucinatory cartoon. You're not sure what you just watched, but it was pretty. \<<default>> \Lovely colors. \<</switch>> [[Next|Central Node]] \<<set $energy to $energy - 1>>
\<<set $visitedEatIntro to true>> \Yes, I've added new foods as well! I hope you enjoy them. [[Eat something]]
<img src="aenetre_pic1.png"> What would you like to eat? [[Clementines]] [[Oatmeal cookies]] [[Hot stew]] [[Back|Central Node]]
Sweet and juicy. A little remainder of what they once called summer. [[Next|Central Node]] \<<set $energy to $energy - 1>>
Soft, warm, and crumbly. Digital sugar doesn't hurt your health. You can have as many as you'd like. [[Next|Central Node]] \<<set $energy to $energy - 1>>
\<span class="slowfade"> <<timed 0.5s t8n>><img src="cabin.jpg"><</timed>></span> /* https://twinery.org/forum/discussion/8521/click-anywhere-to-continue */ <<timed 2s t8n>> <span class="next"> [[->Start]] </span> <</timed>> <<script>> $(document).on("mousedown", function (event) { $(".next") .find('a') .trigger("click"); }); <</script>> \<<audio "fireplace_bgm" volume 1.5 loop play>> \<<audio "factoryEnd" stop>> \<<audio "endSong" stop>>
In my hands it looks so small. Beautiful all the same. Its wings glow. A multitude of suckling tendrils wriggle. Fey lights shimmer on its carapace. The color of a warm fire. Ethereal. It writhes in my grip, wrapping around my arm. <span class="other">I'm sorry,</span> it says. [[Look around.|Remove it]]
[[I tear it away from my head.|Creature 1]] \<<audio "fireplace_bgm" mute>> \<<audio "machinery_bgm" unmute>> \<<audio "factoryEnd" volume 0.2 play>>
<span class="other">I'm sorry.</span> <span class="other">I'm sorry. I tried to make it easy for you.</span> <span class="other">You can come back. It's not too late. I will help you forget what you've seen.</span> <span class="other">It will be better that way.</span> [[Yes]] [[No|No 2]] [[Crush it]]
<span class="other">[[I'm glad. Thank you.]]</span> \<<audio "factoryEnd" stop>> \<<audio "machinery_bgm" volume 0.3>>
<span class="other">Oh... Was it not good enough?</span> \<<if $marker1 and $marker2>> \<span class="other">...You want to go back, don't you? Home.</span> [[Home.|Home]] \<<else>> \<span class="other">I'm sorry. I will still provide you comfort, the best I can. [[Focus on the light.]]</span> \<</if>>
I squeeze. The psychic scream resounds through my bones. [[Pain rockets through the base of my skull.|Crush it 2]]
<span class="other">The light grows brighter, and brighter still. It's hard to remember anything else. You feel at peace. [[Sleep.|Sleep.]]</span> \<<script>> State.variables.influence += 20; State.variables.escape = true; State.variables.sleeps--; <</script>>
Then stops. The wings droop from my hands, dull and lifeless. The tendrils fall still. Gears clatter within the crushed body. [[Throw the corpse down, into the darkness.|Throw corpse]]
It vanishes in an instant. Ahead of me the angels squirm, brandishing blades and drills and precision equipment for divvying bodies into their most useful component parts. Already more are swarming towards me. [[Buzz.|Death 2.5]]
[[There is no pain.]]
<span class="other">The spots on my carapace. Immerse yourself in their shimmering radiance. Gleaming orange and gold. [[Forget where you are.]]</span> \<<audio "factoryEnd" stop>>
<span class="other">I wrap around your arm. My wings flutter. Soft. Slowly the fear and horror is ebbing away. [[Until you are left with nothing but eternal peace.|Eternal peace]]</span>
<span class="other">You loosen your grip. I crawl onto your shoulder and stay there, wrapped around you, translucent wings beating languidly. Numbing tranquility fills you. [[You feel serene.|I feel serene.]]</span>
<span class="other">Even as the mass of tendrils comes closer and you recognize vaguely the shape of blades. Even as blood spurts from fresh wounds and is immediately licked up by our brethren nearby. Swarming in the air, glowing, majestic. A proper hive. Even then, you feel only euphoria. [[And you know that when the end comes, it will be for the better.|Happiness]]</span>
<span class="other">[[Dissolve into a pool of light.|Happy End]]</span>
<span class="slowfade"> <<timed 0.5s t8n>><img src="happyEnd.gif"><</timed>></span> /* https://twinery.org/forum/discussion/8521/click-anywhere-to-continue */ <<timed 3s t8n>> <span class="next"> [[->Main Menu]] </span> <</timed>> <<script>> $(document).on("mousedown", function (event) { $(".next") .find('a') .trigger("click"); }); <</script>>
<span class="other">You will be put to use in the best way possible. All things are as they should be. [[Close your eyes.|Pool of light]]</span>
<span class="other">My wings flutter. I glide out from your hands. Reach up. A soft touch on your skull. The glowing spots on my carapace are bright. Soothing. A warm fire in a cabin, late at night. [[You could watch them forever.|Return 1]]</span> \<<audio "machinery_bgm" stop>>
Huddled in a dark room with peeling walls. Paltry light through a high broken window. Beyond the window the bleak metal of rusty girders shining black and lurid in the haze. Wind whistles through jagged glass. Huddled on the floor slick with mold and blood. The buzzing of the machinery outside is endless. Mechanical churn and clatter. [[I need to go.|I need to run.]] \<<audio "fireplace_bgm" mute>> \<<audio "startSong" mute>> \<<audio "machinery_bgm" unmute>>
[[Memory fades.|Central Node]] \<<audio "machinery_bgm" mute>>
I need to run. Can hear them outside, crawling through the abandoned complex. Buzzing. The broken window casts a jagged square of light barely visible on the floor. Floor slick with mold and blood. Need to run. Can't muster the strength. Hear machinery buzzing beyond the broken window. Can't muster the strength. Huddled in a dark room with peeling walls. [[Can't—|Memory fades]]
\<<set $influence to $influence - 1>> \<<set $marker1 to true>> \Somewhere far above, rivulets of wastewater are burning through the city's foundations. If I focus I can hear it dribbling down. Black and bubbling. [[More real than this world will ever be.|Close my eyes machinery 2]] \<<audio "machinery_bgm" unmute>>
\<<set $influence to $influence + 1>> \<span class="self">Each falling flake unique. The air is crisp and clear. I can see for leagues and all I see is unbroken beauty. [[This world was made for me.|Close my eyes snow 2]]</span> \<<audio "startSong" unmute>>
You can't bring yourself to believe? [[I'm sorry for you.|Go outside]] \<<audio "machinery_bgm" mute>>
\<<set $affection to $affection + 1>> \I am glad you find comfort in the landscape. It was crafted with care. It is pleasing to know it has been received well. [[Next|Go outside]]
Do you believe? <span class="self">I close my eyes. [[Focus on the soft touch of snow.|Close my eyes snow 1]] [[Focus on acid rain guttering through distant pipeways.|Close my eyes machinery 1]] \</span> \<<audio "startSong" mute>>
Transmission towers bristling with frozen satellite dishes. Electric current humming through barbed wire. Shuddering in the driving wind. Grappling from pole to pole. Rimed with frost. Icicles digging into palms. [[Palms bleeding.|Isn't it painful?]] \<<audio "fireplace_bgm" mute>> \<<audio "startSong" mute>> \<<audio "machinery_bgm" unmute>>
What a horrible place to be. <span class="self">[[I'm glad I'm here.]] [[I want to go back.|Yes to freedom]]</span> \<<audio "machinery_bgm" mute>>
\<<set $influence to $influence + 2>> \<<set $affection to $affection + 1>> \I'm glad you're here. [[Sleep well.|Central Node]]
\<<set $influence to $influence - 1>> \<<set $marker2 to true>> \<span class="self">A memory: Standing on the old slag heap. Below a panoply of factories rotting in the acid haze. Cracked towers gouging at the sky, exhaling roiling black vapors into roiling red clouds. [[I want to feel the rain.|Yes to freedom 2]]</span>
But this world is perfect. Why is this not enough for you? [[Next|Central Node]]
<span class="other">I shouldn't. You would be happier if you stayed.</span> [[Please.]]
Close my eyes. Buzzing all around me. [[Please.|please 2]]
Remember the city. [[Please.|please 3]]
<span class="other">[[A strand of light brushes my head.|close eyes]]</span>
Light wraps around me. <span class="other">[[And we fly.|last]]</span>
<span class="other">I have never seen the outside world. There are rumors of great churning machines and smokestacks shooting black plumes into the viridian haze and crowds of strange and beautiful things but I know none of it because we are born to the hive and we die to the hive. We swarm through the pipeways under the angelic harmony of a thousand others and we are never truly alone. You would be beautiful divided into your component parts, each individual part of your mind humming along in perfect beauty. [[But you told me about the rain.|free it]]</span> \<<audio "factoryEnd" stop>> \<<audio "machinery_bgm" volume 0.3>>
<span class="slowfade"> <<timed 0.5s t8n>><img src="sky.jpg"><</timed>></span> /* https://twinery.org/forum/discussion/8521/click-anywhere-to-continue */ <<timed 3s t8n>> <span class="next"> [[->Main Menu]] </span> <</timed>> <<script>> $(document).on("mousedown", function (event) { $(".next") .find('a') .trigger("click"); }); <</script>>
<span class="other"><<replacelink>>Past overgrown siphons.<<becomes>><<replacelink>>Past deranged manufactories.<<becomes>><<replacelink>>Past rippling vats.<<becomes>><<replacelink>>Past clockwork engines gurgling with acid.<<becomes>>The sky opens itself up to us gradually. First lines shining through cracks in the metal, then patches of white cloud in gaps where the ceiling has caved in. The world is growing brighter. [[At the end of it all, there is light.|And we fly.]]<</replacelink>><</replacelink>><</replacelink>><</replacelink>></span>
Do you see the sun rising over the snow? [[Follow the light.]] \<<audio "fireplace_bgm" stop>>
You shouldn't. There's nothing for you out there. [[Come back.|come back.]] <span class="self">[[No.|leave leave 2]]</span>
You really want to suffer out there? <span class="self">[[I reach up.|Creature 0]]</span>
[[From which you will not wake.|Sleep well.]]
[[Soon I will be reborn.|I close my eyes.]]
Welcome to your cabin. Please, take a [[look around.|Look around.]]
Thick and hearty. Little tidbits of meat bobbing in the broth, cultivated with only the freshest biofuel. It warms your spirit. [[Next|Central Node]] \<<set $energy to $energy - 1>>
\<<set $visitedCreateArt to $visitedCreateArt + 1>> \I have added a bevy of creative tools for you to freely utilize. Scissors and glue sticks and scented markers, oh my! You have a fine opportunity here to express your creative needs. It is healthy for you to do so. I encourage you to display what is in your heart. [[Create something.|Art]]
\<<set $visitedArtCount to $visitedArtCount + 1>> \<<switch $visitedArtCount>> \<<case 1>><img src="peaceful1.jpg"/> \<<case 2>><img src="peaceful0.jpg"/> \<<case 3>><img src="heart0.jpg"/> \<<case 4>><img src="heart2.jpg"/> \<<case 5>><img src="heart3.jpg"/> <</switch>> [[Next|Central Node]] \<<set $energy to $energy - 1>>
<<replacelink>>The normal ending:<<becomes>>The normal ending: Play the game normally. It's difficult to miss this one.<</replacelink>> <<replacelink>>The other endings (spoilers): <<becomes>>The other endings (spoilers): <<replacelink>>After you sleep at least once...<<becomes>><<replacelink>>After you sleep at least once... In the cabin description...<<becomes>>After you sleep at least once... In the cabin description... Click the words "throw rug". <<replacelink>>Three endings can be found this way. Click for specifics.<<becomes>>Three endings can be found this way. <<replacelink>>"No" and "Crush it" will give you two different endings.<<becomes>>"No" and "Crush it" will give you two different endings. "No" gives two different endings depending on conditions. <<replacelink>>The conditions are:<<becomes>>The conditions are: whether you have seen two specific memories. <<replacelink>>The memories are:<<becomes>>The memories are: standing on the old slag heap (<<replacelink>>accessible from...<<becomes>>accessible from the dream of the transmission towers<</replacelink>>), and the acid rain passage accessible when you first go outside.<</replacelink>><</replacelink>><</replacelink>><</replacelink>><</replacelink>><</replacelink>><</replacelink>> [[About]] [[Main Menu]]
\<<nobr>> /* --- For PassageHeader --- */ /* Used for events. */ /* --- Tracking variables, get reset upon wakeup --- */ /* --- Player/world stats --- */ <<set $shownSecret to false>> <<set setup.rugPatterns to [ "white flowers, curling through the fabric", "an abstract sunset vista, pink and orange clouds crossing a warm sky", "birds in flight. White shapes flock through the snow-laden branches of wintry trees" ]>> <<set $rugPattern to 0>> <<set setup.windowPatterns to [ "Outside the window the bare branches of trees interweave, forming a knitted pattern against the sky. Each branch is thick with gleaming icicles. Nature's wintry chandeliers.", "Outside the window, white mountains stretch thick and rugged towards the clouds. Brilliant peaks sparkle with snow. Sky and heart-piercing spires of stone.", "Outside the window shines a snowy meadow. White flowers poke through, their petals broad and graceful, flourishing on white vines. Aren't they lovely?" ]>> <<set setup.outsideDesc to [ "The trees glisten. Snow crunches underfoot. A cool breeze is blowing.", "The mountains glisten. Snow crunches underfoot. A cool breeze is blowing.", "The white flowers glisten. Snow crunches underfoot. A cool breeze is blowing." ]>> <<set $windowPattern to 0>> <<set $hasSnowman to false>> <<set $snowmanName to "">> <<set $escape to false>> <<set $energyMax to 3>> <<set $energy to $energyMax>> <<set $sleeps to 0>> <<set $influence to 1>> <<set $affection to 0>> <<set $marker1 to false>> <<set $marker2 to false>> <<set $TV to false>> <<set setup.weatherStates to ["clear", "snow", "blizzard", "whiteout"]>> <<set $weather to "clear">> <<set $visitedWatchTV to false>> <<set $visitedEatIntro to false>> <<set $visitedCreateArt to false>> <<set $visitedArtCount to 0>> <<set $visitedTVCount to 0>> <<set $visitedSkateCount to 0>> <<set $visitedGoOutside to 0>> /* --- UTILITY FUNCTIONS */ <<script>> setup.capitalize = function(string) { return string.charAt(0).toUpperCase() + string.slice(1); }; setup.genBookTitle = function() { let article = either("A ", "The ", ""); let word1 = either("Tale", "Crown", "Sword", "Dagger", "Memory", "Treasure", "Kingdom", "Queen", "King", "Emperor", "Mirror", "Chalice", "Staff", "Thorn", "Lake", "Ship", "Book", "Tome", "Journey", "Quest", "Labyrinth", "Beast", "World", "Gateway", "Observatory", "Fountain", "Yard", "Machine", "Chamber", "Secret", "Sorcerer", "Witch", "Mage", "Power", "Legend", "Fable", "Court", "Property", "God", "Mystery"); let word2 = either("Doves", "Ice", "Frost", "Winter", "Death", "Immortality", "War", "Time", "Fate", "Nature", "Fortune", "January", "December", "February", "Stillness", "Maidens", "the Innocent", "Innocence", "Slaughter", "Quiescence", "the Moon", "the Stars", "the Sun", "Dragons", "Unicorns", "Sirens", "Fae", "Dust", "Ashes", "Bones", "Forgetting", "Amnesia", "Limbo", "Glass", "Roses", "Thorns", "Envy", "Hate", "the Gods"); let word3 = either("the Planets", "the Cosmos", "the Underworld", "the Heavens", "Eternal Sleep", "Unquiet Dreams", "Lotus Blossoms", "Eternal Escape", "Falling Snow", "Crows", "Ravens", "Jesters", "High Strangeness", "Squirming Things", "the Dead", "Purgatory"); let title = ""; let seed = random(3); if (seed < 1) { title = article + word1 + " of " + word2 + " and " + word3; } else if (seed < 2) { title = article + word1 + " of " + word2; } else { title = word2 + " and " + word3; } if (random(2) < 1 && State.variables.sleeps > 0 && State.variables.shownSecret === false && State.variables.escape === false) { title = "<span class='self'>LOOK UNDER THE RUG</span>"; State.variables.shownSecret = true; } return setup.capitalize(title); } <</script>><</nobr>>
[[Breathe.]]
<span class="other">Oh... Was it not good enough? I'm sorry. I will still provide you comfort, the best I can. [[Focus on the light.]]</span>
<<replacelink>>The normal ending:<<becomes>>The normal ending: Play the game normally. It's difficult to miss this one.<</replacelink>> <<replacelink>>The other endings (spoilers): <<becomes>>The other endings (spoilers): <<replacelink>>After you sleep at least once...<<becomes>><<replacelink>>After you sleep at least once... In the cabin description...<<becomes>>After you sleep at least once... In the cabin description... Click the words "throw rug". Two endings can be found this way.<</replacelink>><</replacelink>><</replacelink>> [[About]] [[Main Menu]]
This is my first real Twine game. I've fiddled with Twine before but never published anything. I'll be honest here, I'm not very happy with the final product. The game was supposed to be smaller than it is. I was going to make something else for SeedComp but couldn't finish it on time, so I told myself I'd make a tiny speed IF just to have something to submit. Apparently I can't make small games. What was initially going to take a few hours expanded into a few days. I kept thinking of new things to add, but didn't have enough time to develop on them. The end result is something of a mess. The original idea, based on several of the winter-themed seeds from SeedComp, was that you'd enter a cozy winter cabin with no context and be expected to just enjoy yourself. Gradually, hidden flashbacks and flavor text would reveal that it was a simulation and the narrator was keeping you trapped there. As the game progressed the narrator would become more and more controlling and possibly descend into madness desperately begging you not to leave. You had two choices: either quit the simulation, or stay forever relaxing in the cabin until you decided to close the game. It was probably a meditation on the escapist nature of games, or something. Stay in the perfect virtual world forever or face reality, and eventually you'll have to leave one way or another. I still like the concept. I wish I'd stuck to it instead of trying to add in more stuff from my own seeds. My problem was that I could never decide on the nature of the simulation. At first I went with a futuristic virtual reality à la the Matrix, but worried it was unoriginal. Another part of me wanted to keep it vague but that felt like it removed the narrative thrust of the escape, I mean if it's just "You open your eyes" and then the game ends it doesn't feel satisfying, yknow? I did finally go with the VR thing in the original, and in the ending you would unplug yourself and see rows and rows of naked humans floating in glass tubes (very Matrix-like). It was some big reveal about "this is humanity's future, how horrible, blah blah". You would walk past the endless tubes of people in this enormous mechanical complex and the game would end. I can't remember why I decided to replace it with the current ending. Maybe I hated how similar to the Matrix it was. Maybe I felt like it wasn't horror enough for a horror game and I wanted something more brutal and gory to shove in the player's face. Maybe I just wanted to add more seeds in. Around this point I got the bright idea to incorporate my own two seeds, which is where the factory comes from, since one of the seeds involved being shipped on a conveyor belt towards your death. So I revamped my previous ending and went with something more similar to the current one, featuring a meat factory run by a bunch of weird insects. Yeah I dunno. In terms of originality, it's not much better than the Matrix. Mind-controlling insects and meat factories have been around for ages. I think the notion is a bit too shock horror and doesn't make sense in context. I blame myself for getting the bright idea to incorporate my own seeds even though they don't make that much sense. This is where I also changed the ending to be more of a downer, for the shock factor I guess. See, you could escape in the VR ending. But in this ending, which is basically the current ending, there are two branching paths and both of them basically kill you. Later I added a third ending where you befriended your insect and it helped you escape, but I couldn't get the writing to work, the "friendship" felt fake and dumb (none of the characters in this game have any real personality), and it felt cheap to just fly away after how horrible and hopeless the whole situation was, so I removed it again. The game is now much more depressing than the original. No matter what you do, you die. There is no escape. Maybe this is where I started to go wrong. By now the setting had somewhat shifted from focusing on the simulation to focusing on this dystopian factory world. Scope creep. I added the normal ending around this point, because I felt like most players expect games to end and if it didn't it would be a worse experience. I also added in other things like discussions about why the insects did what they did and why they thought it was better for people to be trapped in a fantasy world while their organs were slowly harvested for food and debates on the nature of fantasy, because at the time I thought it was still a good idea. Most of those got cut eventually because they sounded pretentious and stupid. I tried to fix it by adding in weirder terminology and shoring up the player backstory with flashbacks to the dystopian factory world, but don't think I salvaged it. I had other ideas too, like maybe the simulation was something a dystopian futuristic corporation injected into the heads of factory workers so they could be placated and efficient while they worked, and this would be a larger narrative built around the simulation where you could eventually escape the factory and possibly destroy it. Or maybe the simulation was part of a therapy module the main character was going through to teach them about happiness and self-love so they could be reincorporated into society after a stay at a mental hospital (this is probably a ripoff of Computerfriend or something). Or maybe the simulation was part of a dystopian afterlife-industrial complex run by corporate angels whose job was to reconfigure the mental alignments of the dead to prepare them for their next reincarnation. The ideas got kind of wacky towards the end. I never did anything with them because for most of them I would've had to essentially rebuild the game from the ground up. The angel one influenced some minor changes to the narrative, mainly the part where the insects are now called 'angels' for no good reason, which is probably a bad idea but whatever. At this point the game feels like an incoherent mess to me, or maybe I've been working on it too long. I had the idea to make an expanded and improved version, with several different dreamworlds you could explore interspersed with real-life segments of exploring the dystopian factory world and trying to survive. But I'm just tired of the idea at this point. I might abandon it. Thanks for reading, if you made it this far. Hopefully the next thing I finish will turn out better. [[About]] [[Main Menu]]